package com.biz.primus.ms.member.dao.ro;

import com.biz.primus.base.enums.ChannelTypes;
import com.biz.primus.base.redis.annotation.Ro;
import com.biz.primus.base.redis.annotation.RoSortedSet;
import com.biz.primus.base.redis.bean.BaseRedisObject;
import com.biz.primus.model.member.enums.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Set;

/**
 * 会员基本信息
 * <p>
 * 使用当前对象id来当memberId
 *
 * @author jun.liu
 * @date 2017年10月22日
 * @reviewer
 * @see
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Ro(key = "MemberRo")
@RoSortedSet(key = "list", score = "createTimestamp")
public class MemberRo extends BaseRedisObject<Long>
{

    /**
     * 单独账号
     */
    private String account;

    /**
     * 真实姓名
     */
    private String idCardName;

    /**
     * 手机号
     */
    private String mobile;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 加密盐值
     */
    private String salt;

    /**
     * 登录密码 数据MD5加密
     */
    private String password;

    /**
     * 原始密码(明文)
     */
    private String originalPassword;

    /**
     * 注册时间
     */
    private LocalDateTime regTime;

    /**
     * 注册ip
     */
    private String regIp;


    /**
     * 注册门店用以记录第三方的门店信息等
     */
    private String regDept;

    /**
     * 省id
     */
    private Integer provinceId;

    /**
     * 市id
     */
    private Integer cityId;

    /**
     * 区id
     */
    private Integer districtId;

    /**
     * 区域
     */
    private String area;

    /**
     * 固定电话
     */
    private String tel;

    /**
     * 邮政编码
     */
    private String zipCode;

    /**
     * 身份证号码
     */
    private String idCard;

    /**
     * 用户昵称
     */
    private String nickName;

    /**
     * 头像地址
     */
    private String portraitUrl;

    /**
     * 生日
     */
    private LocalDateTime birthday;

    /**
     * 推荐人（推荐号，可以用来存储会员id，也可以是第三方系统的id或者识别数据）
     */
    private String referees;

    /**
     * 推荐时间
     */
    private LocalDateTime refereeTimestamp;

    /**
     * 职业
     */
    private String vocation;

    /**
     * 兴趣爱好
     */
    private String interest;

    /**
     * 备注
     */
    private String remark;

    /**
     * 注册的渠道
     * 如果是虚拟会员 说明没有注册
     */
    private ChannelTypes channelType;

    /**
     * 注册账号来源 qq 微信 支付宝 微博 自有账号 手机 邮箱
     */
    private String regAccountSrc;

    /**
     * 推荐人类型
     */
    private RefereesTypes refereesType;

    /**
     * 性别
     */
    private SexTypes sexType = SexTypes.secret;

    /**
     * 会员权属类型
     */
    private OwnershipTypes ownershipType = OwnershipTypes.personal;

    /**
     * 婚姻状况
     */
    private MaritalStatusTypes maritalStatusType = MaritalStatusTypes.secret;

    /**
     * 学历
     */
    private EducationTypes educationType = EducationTypes.secret;

    /**
     * 会员状态
     */
    private MemberStateTypes memberStateType = MemberStateTypes.NORMAL;

    /**
     * 会员类型  app 微商城 b2c等自有会员算C端  B端算第三方 如erp会员 虚拟会员指的没有账号 未在被系统下单的 如从天猫下单 京东下单拉取的信息
     */
    private MemberTypes memberType;

    /**
     * 会员当前积分
     */
    private Integer integral;

    /**
     * 登录次数
     */
    private Integer loginCount = 0;


    /**
     * 最后登录IP
     */
    private String lastLoginIp;

    /**
     * 最后登录时间
     */
    private LocalDateTime lastLoginDate;

    /**
     * 最后登录时系统
     */
    private String lastLoginOs;

    /**
     * 最后登录时应用版本
     */
    private String lastLoginAppVersion;

    /**
     * 最后登录纬度
     */
    private BigDecimal lastLoginLat;

    /**
     * 最后登录经度
     */
    private BigDecimal lastLoginLon;

    /**
     * 最后登录城市id
     */
    private Long lastLogincityId;

    /**
     * 最后登录渠道
     */
    private ChannelTypes lastLoginChannelType;

    /**
     * 默认地址Id MemberAddress对象
     */
    private Long memberAddressId;

    /**
     * 会员当前等级 MemberLevel对象
     */
    private Long memberLevelId;

    /**
     * 会员所拥有的标签id集合
     */
    private Set<Long> labelIds;

    /**
     * 会员所拥有的分组id集合
     */
    private Set<Long> groupIds;

}
